This section is intended to introduce the reader to various aspects of art, which may be related to various aspects of the present invention that are described or claimed below. This discussion is believed to be helpful in providing the reader with background information to facilitate a better understanding of the various aspects of the present invention. Accordingly, it should be understood that these statements are to be read in this light, and not as admissions of prior art.
Many computer applications (e.g., rendering, data mining, and scientific computing) can be very complex and computationally intensive processes. Accordingly, it is desirable to find improved ways to focus and utilize computational resources for such operations. Peer-to-peer systems may be useful for such utilization. Peer-to-peer systems may include a network setup that allows every computer to both offer and access network resources, such as shared files, without requiring a centralized file server. For example, peer-to-peer clusters may be used to provide efficiency gains for complex and intensive computing processes by pooling together computational resources that can be shared among peers. Peer-to-peer clusters may allow users to share files, CPU cycles, memory, computing capabilities, networks, bandwidth, and storage.
Sharing of nodes dispersed in a network structure may facilitate a reduction of time required for packets or frames to travel from a sending station to a receiving station because applications can store data close to potential users. In other words, sharing of nodes may allow for lower delay. Accordingly, pooling of resources may allow increased throughput (i.e., the amount of data that can be sent from one location to another in a specific amount of time) for a network structure. Sharing may also allow greater reliability because of redundancy in hosts and network connections. Further, sharing may allow for operation at a lower cost than that of operating a comparable private system.
Although resource sharing can substantially improve computational resource utilization, there may still be excessive demand for resources because demand grows to fill available capacity. For example, resource demands of data mining, scientific computing, rendering, and Internet services have kept pace with electronic hardware improvements (e.g., increased storage capacity). Accordingly, allocation problems can be an obstacle to resource sharing. Some allocation problems may include strategic users who act in their own interest, rapidly changing and unpredictable demand, and hundreds of thousands of unreliable hosts that are physically and administratively distributed.
Existing allocation systems may not provide users with incentives to honestly report task values because the users can receive favorable allocations by providing disproportionate requests. Additionally, existing systems may not assist with allocation because they perform poorly with changing loads, impose bottlenecks, and decrease reliability. Further, some allocation systems do not properly scale to a large number of distributed hosts. What is needed is an improved allocation solution that maximizes economic efficiency and that can scale to many different distributed hosts. Additionally, what is needed is an allocation solution that provides users with the ability to express preferences for different resources concisely and in a manner that is efficient to process.